package com.dc.system.mapper;

import com.dc.system.model.SysDept;
import com.dc.system.model.SysDeptOrgan;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * @Description: SysDeptMapper
 * @Author: ChenXueLi
 * @Date: 2018-05-05 8:58
 */
public interface SysDeptMapper {

    /**
     * 添加一个部门
     * @param sysDept
     * @return
     */
    int addSysDept(SysDept sysDept);

    /**
     * 根据部门id删除一个部门
     * @param sysDept
     * @return
     */
    int deleteSysDeptById(SysDept sysDept);

    /**
     * 根据部门id修改一个部门的信息
     * @param sysDept
     * @return
     */
    int updateSysDeptById(SysDept sysDept);

    /**
     * 根据id查询部门
     * @param integer
     * @return
     */
    SysDept getSysDeptById(int integer);

    /**
     * 查询出当前部门数据的总数（没有被标记删除的）
     * @return
     */
    int getSysDeptsCount();

    /**
     * 根据id修改部门的排序序号
     * @param orderCode
     * @return
     */
    List<SysDept> getSysDeptsByAfterOrderCode(int orderCode);

    /**
     * 根据id修改部门的排序序号
     * @param sysDept
     * @return
     */
    int updateSysDeptOrderCodeById(SysDept sysDept);

    /**
     * 直接修改排序号之后的部门数据（递增）
     * @param sysDept
     * @return
     */
    int updateSysDeptOrderCodeIncreaseByOrderCode(SysDept sysDept);

    /**
     * 直接修改排序号之后的部门数据（递减）
     * @param sysDept
     * @return
     */
    int updateSysDeptOrderCodeDecreaseByOrderCode(SysDept sysDept);

    /**
     * 分页查询所有部门
     * @param map
     * @return
     */
    List<SysDept> getSysDepts(Map map);

    /**
     * 查询出单位与部门的连接
     * @param deptId
     * @param organId
     * @return
     */
    List<SysDeptOrgan> getSysDeptOrgans(@Param("deptId")Integer deptId, @Param("organId")Integer organId);

    /**
     * 新增一个单位与部门的连接
     * @param sysDeptOrgan
     * @return
     */
    int addSysDeptOrgan(SysDeptOrgan sysDeptOrgan);

    /**
     * 删除一个部门或部门的绑定
     * @param deptId
     * @param organId
     * @return
     */
    int deleteSysDeptOrgan(@Param("deptId")Integer deptId, @Param("organId")Integer organId);

    /**
     * 查询出关于单位的所有部门
     * @param organId
     * @return
     */
    List<SysDept> getSysDeptByOrganId(@Param("organId")Integer organId);

}
